home *** CD-ROM | disk | FTP | other *** search
/ Shareware Games Galore! / Shareware Games Galore!.iso / arcade / gameser5 / yahtzee.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1982-12-12  |  15.6 KB  |  643 lines

  1. 0  GOTO 65000
  2. 1  '
  3. 1000  '     YATZEE
  4. 1010  ' ORIGINAL BY JL HELMS & MF PEZOK FOR CCII
  5. 1020  ' CORONADO, CA
  6. 1030  ' ADAPTED TO IBM PC BY PATRICK LEABO
  7. 1040  ' TUCSON, AZ
  8. 1050  '
  9. 1060  DEFINT A-Z
  10. 1070  DIM C(5):DIM K(18,7):DIM F(5):DIM A$(7)
  11. 1080  DIM S(6,5):DIM M(13),TN(6),DU(6):KEY OFF:COLOR 5,3,1:WIDTH 80
  12. 1090  SCREEN 0,1:RESTORE 1150:FOR N= 1 TO 6:READ TN(N):NEXT
  13. 1100  COMMON MENU
  14. 1110  GOSUB 5090
  15. 1120  C1= 39:C2= 63:C3= 33:C4= 56
  16. 1130  GOSUB 4660
  17. 1140  CLS:GOSUB 4430
  18. 1150  DATA 49,51,53,54,56,61
  19. 1160  GOSUB 6820:REM  draw yatzee board
  20. 1165  COLOR 7,0
  21. 1170  RANDOMIZE VAL(RIGHT$(TIME$,2))
  22. 1180  LOCATE 25,1
  23. 1190  PRINT "HOW MANY PLAYERS?  ";:LOCATE ,,1:GOSUB 2090
  24. 1200  GOSUB 7100: N=ASC(KB$)-48
  25. 1210  IF N< 1 OR N> 5 THEN 1180
  26. 1220  IF N< 5 THEN GOSUB 6000
  27. 1230  IF CC= 1THEN GOSUB 5480
  28. 1240  LOCATE 25,1:PRINT STRING$(60," ");:FOR A=1 TO N
  29. 1250  LOCATE 24,1:PRINT STRING$(60," ");:LOCATE 24,1
  30. 1260  PRINT "PLAYER NUMBER "A;" NAME PLEASE  ";
  31. 1270  GOSUB 2090:LINE INPUT;A$(A):IF A$(A)= "" THEN BEEP:GOTO 1250
  32. 1280  A$(A)=LEFT$(A$(A),9)
  33. 1290  NEXT A
  34. 1295  LOCATE 24,1:PRINT STRING$(60," ");:LOCATE 24,1
  35. 1300  IF CC= 1 THEN N= N+ 1:A$(N)= "IBM PC"
  36. 1310  LOCATE 23,1
  37. 1320  A= 0
  38. 1330  REM 
  39. 1340  REM   NEXT ROLL PRESET
  40. 1350  REM  
  41. 1360  A= A+ 1:IF A> N THEN A= 1
  42. 1370  H= 0:GOSUB 5340
  43. 1380  IF A= 0THEN 4760
  44. 1390  IF K(18,A)= 2THEN 1360
  45. 1400  LOCATE 23,1:PRINT STRING$(70," ");
  46. 1410  LOCATE 23,4* (A- 1)+ 14
  47. 1420  PRINT A$(A);
  48. 1430  REM 
  49. 1440  REM   INITIAL ROLL
  50. 1450  REM  
  51. 1460  H= H+ 1:MR= 0
  52. 1470  FOR B= 1TO 5
  53. 1480  J= B- 1:C(B)= INT (6* RND (1)+ 1)
  54. 1490  DIE= C(B):F(B)= 0
  55. 1500  GOSUB 5250
  56. 1510  GOSUB 5530
  57. 1520  NEXT B
  58. 1530  IF A* CC= N THEN 2140
  59. 1540  REM 
  60. 1550  REM  PLAYER SELECTS QTY TO ROLL
  61. 1560  REM 
  62. 1570  GOSUB 7080
  63. 1580  IF H> 2THEN 1940
  64. 1590  POKE 106,0:PRINT " HOW MANY DICE TO ROLL AGAIN? ";:LOCATE ,,1:GOSUB 2080:GOSUB 7100:F$=KB$:PRINT F$;:F=ASC(F$)-48:LOCATE ,,0
  65. 1600  IF F= - 1THEN GOSUB 35000
  66. 1610  IF F< 0OR F> 5THEN 1570
  67. 1620  IF F= 0THEN 1940
  68. 1630  IF F= 5THEN 1430
  69. 1640  REM 
  70. 1650  REM  PLAYER SELECTS DICE TO ROLL
  71. 1660  REM 
  72. 1670  H= H+ 1
  73. 1680  GOSUB 7080
  74. 1690  FOR NN= 1TO 4:F(NN)= 0:NEXT 
  75. 1700  PRINT " ROLL WHICH";F;"DICE AGAIN   ";:LOCATE ,,1
  76. 1710  GOSUB 2090:FOR ND= 1TO F:
  77. 1720  GOSUB 7100:F$=KB$::F(ND)= ASC(F$)- 48:GOSUB 2120:IF F(ND)= 0 AND  ND= 1 THEN  ND= F:GOTO 1740
  78. 1730  IF F(ND)< 1 OR  F(ND)> 5 THEN 1720
  79. 1740  PRINT F(ND);:NEXT
  80. 1750  X= 2:XF= 0
  81. 1760  FOR J= 1TO F
  82. 1770  IF F= 1THEN 1790
  83. 1780  IF F(J)= F(J+ 1)THEN X= 1
  84. 1790  IF F(1)= 0THEN XF= 1
  85. 1800  NEXT J:IF XF= 1THEN H= H- 1:GOTO 1570
  86. 1810  ON X GOTO 1680,1820
  87. 1820  REM  
  88. 1830  REM  PLAYER ROLLS DICE AGAIN
  89. 1840  REM 
  90. 1850  FOR B= 1TO 4
  91. 1860  IF F(B)= 0THEN 1920
  92. 1870  C(F(B))= INT (6* RND (1)+ 1)
  93. 1880  DIE= C(F(B)):J= F(B)- 1
  94. 1890  GOSUB 5250
  95. 1900  GOSUB 5530
  96. 1910  F(B)= 0
  97. 1920  NEXT B
  98. 1930  GOTO 1540
  99. 1940  REM 
  100. 1950  REM   PLAY BOARD NUMBER
  101. 1960  REM 
  102. 1970  GOSUB 7080
  103. 1980  PRINT " PLAY BOARD NUMBER?  ";:LOCATE ,,1:GOSUB 2080:GOSUB 7100:I$=KB$:I=ASC(I$)- 48:LOCATE ,,0:IF I> 9 THEN I= I- 7
  104. 1990  GOSUB 2120:IF I> 9 THEN PRINT CHR$ (I+ 55);:GOTO 2010
  105. 2000  PRINT I;
  106. 2010  IF I< 1OR I> 13THEN 1970
  107. 2020  IF I= 12AND K(12,A)> - 1THEN 2140
  108. 2030  IF K(I,A)= 0THEN 2140
  109. 2040  LOCATE 24,1:BEEP
  110. 2050  PRINT "NO - NO - DUMMY - - TRY AGAIN";:FOR ND=1 TO 1500:NEXT:LOCATE 24,1:PRINT STRING$(60," ");
  111. 2060  LOCATE 25,1:PRINTSTRING$(60," ");:LOCATE 25,1
  112. 2070  GOTO 1980
  113. 2080  REM  HIGH PITCH CLICK
  114. 2090  PLAY "L64T200N70":RETURN
  115. 2100  REM  GLISSANDO SOUND
  116. 2110  PLAY "MBt255MLL64O5CC#DD#EFF#GG#AA#B":RETURN
  117. 2120  ' LO PITCH CLICK
  118. 2130  PLAY "L64T200N46":RETURN
  119. 2140  REM  
  120. 2150  REM  DICE LOGIC
  121. 2160  REM  CLEAR/SET S(M,K)
  122. 2170  REM  
  123. 2180  FOR M= 0TO 6
  124. 2190  FOR K= 0TO 5
  125. 2200  S(M,K)= 0
  126. 2210  NEXT K
  127. 2220  NEXT M
  128. 2230  FOR J= 1TO 5
  129. 2240  X= C(J):S(X,0)= S(X,0)+ 1
  130. 2250  P= S(X,0):S(X,P)= J
  131. 2260  NEXT J
  132. 2270  REM  
  133. 2280  REM  SET S(0,K)=M SEQUENCE BY QTY
  134. 2290  REM  
  135. 2300  X= 0
  136. 2310  FOR J= 5TO 1STEP - 1
  137. 2320  FOR M= 6TO 1STEP - 1
  138. 2330  IF S(M,0)< > J THEN 2350
  139. 2340  S(0,X)= M:X= X+ 1
  140. 2350  NEXT M
  141. 2360  NEXT J
  142. 2370  IF A* CC= N THEN 2740
  143. 2380  IF I> 6THEN 2460
  144. 2390  REM  
  145. 2400  REM  CHECK PLAYER BOARD 1-6
  146. 2410  REM  
  147. 2420  GOSUB 6110
  148. 2430  IF X= - 1THEN 2720
  149. 2440  K(I,A)= I* S(S(0,X),0)
  150. 2450  GOTO 3980
  151. 2460  REM  
  152. 2470  REM  CHECK PLAYER BOARD 7-13
  153. 2480  REM  
  154. 2490  ON I- 6GOTO 2500,2520,2540,2560,2610,2650,2680
  155. 2500  IF S(S(0,0),0)< 3THEN 2720
  156. 2510  GOSUB 6190:GOTO 3980
  157. 2520  IF S(S(0,0),0)< 4THEN 2720
  158. 2530  GOSUB 6190:GOTO 3980
  159. 2540  IF S(S(0,0),0)< > 3OR S(S(0,1),0)< > 2THEN 2720
  160. 2550  K(9,A)= 25:GOTO 3980
  161. 2560  IF S(1,0)> 0AND S(2,0)> 0AND S(3,0)> 0AND S(4,0)> 0THEN 2600
  162. 2570  IF S(2,0)> 0AND S(3,0)> 0AND S(4,0)> 0AND S(5,0)> 0THEN 2600
  163. 2580  IF S(3,0)> 0AND S(4,0)> 0AND S(5,0)> 0AND S(6,0)> 0THEN 2600
  164. 2590  GOTO 2720
  165. 2600  K(10,A)= 30:GOTO 3980
  166. 2610  IF S(1,0)AND S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)= 1THEN 2640
  167. 2620  IF S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)AND S(6,0)= 1THEN 2640
  168. 2630  GOTO 2720
  169. 2640  K(11,A)= 40:GOTO 3980
  170. 2650  IF S(S(0,0),0)< > 5THEN 2720
  171. 2660  IF K(12,A)= 0THEN K(12,A)= 50:GOTO 3980
  172. 2670  K(12,A)= K(12,A)+ 100:GOTO 3980
  173. 2680  GOSUB 6190:GOTO 3980
  174. 2690  REM  
  175. 2700  REM  SET PLAYER INVALID
  176. 2710  REM  
  177. 2720  K(I,A)= - 1
  178. 2730  GOTO 3980
  179. 2740  REM  
  180. 2750  REM  COMPUTER CHECKS
  181. 2760  REM  
  182. 2770  I= 12
  183. 2780  IF S(S(0,0),0)= 5AND K(12,A)= 0THEN K(12,A)= 50:GOTO 3980
  184. 2790  IF S(S(0,0),0)= 5AND K(12,A)> 0THEN K(12,A)= K(12,A)+ 100:GOTO 3980
  185. 2800  I= 8
  186. 2810  IF S(S(0,0),0)= 4AND K(8,A)= 0THEN GOSUB 6190:GOTO 3980
  187. 2820  I= 9
  188. 2830  IF S(S(0,0),0)= 3AND S(S(0,1),0)= 2AND K(9,A)= 0THEN K(9,A)= 25:GOTO 3980
  189. 2840  IF K(11,A)< > 0THEN 2900
  190. 2850  I= 11
  191. 2860  IF S(1,0)AND S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)= 1THEN 2890
  192. 2870  IF S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)AND S(6,0)= 1THEN 2890
  193. 2880  GOTO 2900
  194. 2890  K(11,A)= 40:GOTO 3980
  195. 2900  IF K(10,A)< > 0THEN 2970
  196. 2910  I= 10
  197. 2920  IF S(1,0)> 0AND S(2,0)> 0AND S(3,0)> 0AND S(4,0)> 0THEN 2960
  198. 2930  IF S(2,0)> 0AND S(3,0)> 0AND S(4,0)> 0AND S(5,0)> 0THEN 2960
  199. 2940  IF S(3,0)> 0AND S(4,0)> 0AND S(5,0)> 0AND S(6,0)> 0THEN 2960
  200. 2950  GOTO 2970
  201. 2960  K(10,A)= 30:GOTO 3980
  202. 2970  IF H< 3THEN 3140
  203. 2980  I= 6
  204. 2990  IF S(6,0)> 2AND K(6,A)= 0THEN K(6,A)= 6* S(6,0):GOTO 3980
  205. 3000  I= 5
  206. 3010  IF S(5,0)> 2AND K(5,A)= 0THEN K(5,A)= 5* S(5,0):GOTO 3980
  207. 3020  I= 4
  208. 3030  IF S(4,0)> 2AND K(4,A)= 0THEN K(4,A)= 4* S(4,0):GOTO 3980
  209. 3040  I= 3
  210. 3050  IF S(3,0)> 2AND K(3,A)= 0THEN K(3,A)= 3* S(3,0):GOTO 3980
  211. 3060  I= 7
  212. 3070  IF S(S(0,0),0)> 2AND K(7,A)= 0THEN GOSUB 6190:GOTO 3980
  213. 3080  I= 2
  214. 3090  IF S(2,0)> 2AND K(2,A)= 0THEN K(2,A)= 2* S(2,0):GOTO 3980
  215. 3100  I= 1
  216. 3110  IF S(1,0)> 2AND K(1,A)= 0THEN K(1,A)= S(1,0):GOTO 3980
  217. 3120  I= 13:IF K(13,A)< > 0THEN 3140
  218. 3130  IF C(1)+ C(2)+ C(3)+ C(4)+ C(5)> 19THEN GOSUB 6190:GOTO 3980
  219. 3140  REM  
  220. 3150  REM  CLEAR DICE NUMBER F(B)
  221. 3160  REM  COMPUTER
  222. 3170  REM  
  223. 3180  FOR B= 1TO 5
  224. 3190  F(B)= 0
  225. 3200  NEXT B
  226. 3210  REM  
  227. 3220  REM  GET DICE CONTROL
  228. 3230  REM  COMPUTER
  229. 3240  REM  
  230. 3250  H= H+ 1:IF H> 3THEN 3840
  231. 3260  I= M(MR):IF I< > 0THEN 3290
  232. 3270  MR= MR+ 1:IF MR> 13THEN MR= 1
  233. 3280  GOTO 3260
  234. 3290  IF I= 12AND K(12,A)> - 1THEN 3330
  235. 3300  IF K(I,A)< > 0THEN 3270
  236. 3310  IF I= 9THEN 3440
  237. 3320  IF I= 10OR I= 11THEN 3560
  238. 3330  REM  
  239. 3340  REM  GET DICE 1,2,3,4
  240. 3350  REM  COMPUTER
  241. 3360  REM  
  242. 3370  M= 0:J= 1
  243. 3380  M= M+ 1:IF M> 4THEN 3720
  244. 3390  K= S(0,M):IF K= 0THEN 3720
  245. 3400  FOR L= 1TO S(K,0)
  246. 3410  F(J)= S(K,L):J= J+ 1
  247. 3420  NEXT L
  248. 3430  GOTO 3380
  249. 3440  REM  
  250. 3450  REM  GET DICE FH
  251. 3460  REM  COMPUTER
  252. 3470  REM  
  253. 3480  M= 0:J= 1
  254. 3490  M= M+ 1:IF M> 4THEN 3720
  255. 3500  K= S(0,M):IF K= 0THEN 3720
  256. 3510  IF K> 1THEN 3490
  257. 3520  FOR L= 1TO S(K,0)
  258. 3530  F(J)= S(K,L):J= J+ 1
  259. 3540  NEXT L
  260. 3550  GOTO 3490
  261. 3560  REM  
  262. 3570  REM  GET DICE LG/SM ST
  263. 3580  REM  COMPUTER
  264. 3590  REM  
  265. 3600  M= 0:J= 1
  266. 3610  M= M+ 1:IF M> 4THEN 3680
  267. 3620  K= S(0,M):IF K= 0THEN 3680
  268. 3630  IF S(K,0)= 1THEN 3610
  269. 3640  FOR L= 1TO S(K,0)
  270. 3650  F(J)= S(K,L):J= J+ 1
  271. 3660  NEXT L
  272. 3670  GOTO 3610
  273. 3680  IF F(1)< > 0THEN 3720
  274. 3690  L= INT (2* RND (1)+ 1)
  275. 3700  F(1)= 5
  276. 3710  IF L= 1THEN F(1)= 1
  277. 3720  REM  
  278. 3730  REM  COMPUTER ROLL AGAIN
  279. 3740  REM  
  280. 3750  FOR B= 1TO 4
  281. 3760  IF F(B)< 1THEN 3810
  282. 3770  C(F(B))= INT (6* RND (1)+ 1)
  283. 3780  DIE= C(F(B)):J= F(B)- 1
  284. 3790  GOSUB 5250
  285. 3800  GOSUB 5530
  286. 3810  F(B)= 0
  287. 3820  NEXT B
  288. 3830  GOTO 2140
  289. 3840  REM  
  290. 3850  REM  COMPUTER MUST SCORE
  291. 3860  REM  
  292. 3870  MR= MR+ 1:IF MR> 13THEN MR= 1
  293. 3880  I= M(MR):IF I= 0THEN 3870
  294. 3890  IF K(I,A)< > 0THEN 3870
  295. 3900  IF I> 6THEN 3960
  296. 3910  GOSUB 6110
  297. 3920  IF X= - 1THEN 3970
  298. 3930  IF K(I,A)< > 0THEN 3870
  299. 3940  K(I,A)= S(I,0)* I
  300. 3950  IF K(I,A)< > 0THEN 3980
  301. 3960  IF I= 13AND K(13,A)= 0THEN GOSUB 6190
  302. 3970  IF K(I,A)= 0THEN K(I,A)= - 1
  303. 3980  REM  
  304. 3990  REM  GET SCOREBOARD TOTALS
  305. 4000  REM  
  306. 4010  FOR J= 14TO 17
  307. 4020  K(J,A)= 0
  308. 4030  NEXT J
  309. 4040  FOR J= 1TO 6
  310. 4050  IF K(J,A)< 0THEN 4070
  311. 4060  K(15,A)= K(15,A)+ K(J,A)
  312. 4070  NEXT J
  313. 4080  IF K(15,A)> 62THEN K(14,A)= 35
  314. 4090  FOR J= 7TO 13
  315. 4100  IF K(J,A)< 0THEN 4120
  316. 4110  K(16,A)= K(16,A)+ K(J,A)
  317. 4120  NEXT J
  318. 4130  K(17,A)= K(14,A)+ K(15,A)+ K(16,A)
  319. 4140  REM  
  320. 4150  REM  PRINT SCORE
  321. 4160  REM  
  322. 4170  GOSUB 2110
  323. 4180  COLOR 15,0
  324. 4190  FOR J= 1TO 6
  325. 4200  IF K(J,A)< 0 THEN LOCATE J+1,4* (A- 1)+ 15:PRINT "  0";:GOTO 4230
  326. 4210  IF K(J,A)< 1 THEN 4230
  327. 4220  LOCATE J+1,4* (A- 1)+ 15:PRINT  USING"###";K(J,A);
  328. 4230  NEXT J
  329. 4240  FOR J= 7TO 13
  330. 4250  IF K(J,A)< 0 THEN LOCATE J+4,4* (A- 1)+ 15:PRINT "  0":GOTO 4280
  331. 4260  IF K(J,A)< 1 THEN 4280
  332. 4270  LOCATE J+4,4* (A- 1)+ 15:PRINT USING "###";K(J,A)
  333. 4280  NEXT J
  334. 4290  LOCATE 9,4* (A- 1)+ 15:PRINT USING "###";K(15,A)
  335. 4300  LOCATE 19,4* (A- 1)+ 15:PRINT USING "###";K(16,A)
  336. 4310  LOCATE 20,4* (A- 1)+ 15:PRINT USING "###";K(14,A)
  337. 4320  LOCATE 21,4* (A- 1)+ 15:PRINT USING "###";K(17,A)
  338. 4330  COLOR 7,0
  339. 4340  IF A* CC< > N THEN 1330
  340. 4350  REM  
  341. 4360  REM  RESET M(I) COMPUTER PRIORITIES
  342. 4370  REM  
  343. 4380  FOR B= 1TO 13
  344. 4390  IF M(B)= 12THEN 4410
  345. 4400  IF M(B)= I THEN M(B)= 0
  346. 4410  NEXT B
  347. 4420  GOTO 1330
  348. 4430  REM  
  349. 4440  REM   INSTRUCTIONS
  350. 4450  REM  
  351. 4460  PRINT "            Y A H T Z E E "
  352. 4470  PRINT "THIS IS THE GAME OF YAHTZEE - "
  353. 4480  PRINT "FROM 1 TO 7 PLAYERS MAY PLAY AT THE SAME TIME"
  354. 4490  PRINT "WITH EACH PLAYERS CURRENT STATUS SHOWN ON THE"
  355. 4500  PRINT "PLAYING BOARD, INCLUDING TOTAL SCORES"
  356. 4510  PRINT 
  357. 4520  PRINT "THE ONLY DIFFERENCE BETWEEN THIS GAME AND THE"
  358. 4530  PRINT "POPULAR HOME GAME IS THAT YOU MAY GET MULTIPLE"
  359. 4540  PRINT "YAHTZEES HERE ..... THE FIRST YAHTZEE SCORES"
  360. 4550  PRINT "50 POINTS, AND EACH ADDITIONAL ONE WILL YIELD"
  361. 4560  PRINT "A BONUS OF 100 POINTS (IF THE YAHTZEE IS PUT"
  362. 4570  PRINT "INTO THE YAHTZEE BLOCK)..... IN ADDITION YOU"
  363. 4580  PRINT "WILL BE GIVEN AN EXTRA TURN AT THE END OF"
  364. 4590  PRINT "THE GAME":PRINT :PRINT 
  365. 4600  PRINT "THE WINNER WILL BE ANNOUNCED AT THE END OF"
  366. 4610  PRINT "THE GAME - - BUT I WOULDNT ADVISE ANYONE"
  367. 4620  PRINT "TO BE LAST......."
  368. 4630  PRINT:PRINT
  369. 4640  GOSUB 2090:INPUT "HIT RETURN TO CONTINUE  ";Y$:BEEP
  370. 4650  RETURN 
  371. 4660  RETURN
  372. 4670  LOCATE 10,10:PRINT "YATZEE.BAS     VER 3.2"
  373. 4680  LOCATE 12,10:PRINT "27 JUN 79"
  374. 4690  LOCATE 14,10:PRINT "DEVELOPED BY"
  375. 4700  LOCATE 15,13:PRINT "J.L. HELMS    &    M.F. PEZOK"
  376. 4710  LOCATE,16,13:PRINT "1009 LEYTE RD / 1321 SAIPAN RD"
  377. 4720  LOCATE 17,17:PRINT "CORONADO,  CA.  92118"
  378. 4730  LOCATE 18,15:PRINT "(714) 435-6992 / 437-4659"
  379. 4740  PRINTCHR$(11)
  380. 4750  RETURN 
  381. 4760  REM 
  382. 4770  REM   END - SORT WINNER
  383. 4780  REM 
  384. 4790  X= 2:IF N= 1THEN 4870
  385. 4800  FOR J= 1TO N- 1
  386. 4810  IF K(17,J)> K(17,J+ 1)THEN 4850
  387. 4820  K= K(17,J):K(17,J)= K(17,J+ 1):K(17,J+ 1)= K
  388. 4830  A$= A$(J):A$(J)= A$(J+ 1):A$(J+ 1)= A$
  389. 4840  X= 1
  390. 4850  NEXT J
  391. 4860  ON X GOTO 4760,4870
  392. 4870  REM 
  393. 4880  REM   PRINT WINNERS STANDINGS
  394. 4890  REM 
  395. 4900  RESTORE 5200
  396. 4910  FOR J= 1TO N
  397. 4920  LOCATE 25,1:PRINTSTRING$(60," ");
  398. 4930  IF J> 1 AND J= N THEN RESTORE 5240
  399. 4940  LOCATE 25,1:READ A$
  400. 4950  PRINT A$;"     ";A$(J);" ";
  401. 4960  TT= 500* (N- J+ 1):IF TT< 1500THEN TT= 1500
  402. 4970  FOR T= 1TO TT:NEXT T
  403. 4980  NEXT J
  404. 4990  LOCATE 25,1:PRINTSTRING$(60," ");
  405. 5000  LOCATE 24,1:PRINT "+++   END OF GAME   +++";
  406. 5010  FOR T= 1TO 2000:NEXT T
  407. 5020  '
  408. 5030  GOSUB 2090:LOCATE 25,1:INPUT "PLAY AGAIN?  Y/N  ";Y$
  409. 5040  IF LEFT$ (Y$,1)= "Y"THEN GOSUB 5090:GOTO 1110
  410. 5050  IF LEFT$ (Y$,1)= CHR$(27) THEN BEEP:GOTO 5070
  411. 5060  IF LEFT$ (Y$,1)< > "N"THEN BEEP:GOTO 5030
  412. 5070  GOTO 65200
  413. 5080  END 
  414. 5090  REM 
  415. 5100  REM   CLEAR MATRICES
  416. 5110  REM 
  417. 5120  FOR K= 1TO 7
  418. 5130  FOR J= 1TO 18
  419. 5140  K(J,K)= 0
  420. 5150  NEXT J
  421. 5160  A$(K)= ""
  422. 5170  NEXT K
  423. 5180  CLS
  424. 5190  RETURN 
  425. 5200  DATA "+++   THE WINNER   +++"
  426. 5210  DATA " SECOND PLACE"," THIRD PLACE "
  427. 5220  DATA " FOURTH PLACE "," FIFTH PLACE "
  428. 5230  DATA " SIXTH PLACE "
  429. 5240  DATA " DEAD LAST "
  430. 5250  REM 
  431. 5260  REM   ERASE DIE
  432. 5270  REM 
  433. 5280  COLOR 0,7:PRINT"";:
  434. 5290  LOCATE 4* J+ 1,50:PRINT"       ";
  435. 5300  LOCATE 4* J+ 2,50:PRINT"       ";
  436. 5310  LOCATE 4* J+ 3,50:PRINT"       ";
  437. 5320  COLOR 7,0
  438. 5330  RETURN 
  439. 5340  REM  
  440. 5350  REM    CHECK IF DONE
  441. 5360  REM  
  442. 5370  X= 0
  443. 5380  FOR J= 1TO N
  444. 5390  Y= 2
  445. 5400  FOR K= 1TO 13
  446. 5410  IF K(K,J)= 0THEN Y= 1
  447. 5420  NEXT K
  448. 5430  K(18,J)= Y
  449. 5440  IF Y= 2THEN X= X+ 1
  450. 5450  NEXT J
  451. 5460  IF X= > N THEN A= 0
  452. 5470  RETURN 
  453. 5480  REM  
  454. 5490  REM  COMPUTER PRIORITIES INFO
  455. 5500  REM  
  456. 5510  GOSUB 6780
  457. 5520  RETURN 
  458. 5530  REM 
  459. 5540  REM   PRINT DIE
  460. 5550  REM 
  461. 5560  COLOR 0,7:LOCATE ,,0
  462. 5570  REM 
  463. 5580  PLAY "L32T200N=TN(DIE);"
  464. 5590  ON DIE GOTO 5930,5870,5810,5750,5690,5630
  465. 5600  '
  466. 5610  '   SIX
  467. 5620  '
  468. 5630  LOCATE 4*J+1,50:PRINT "";CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);
  469. 5640  LOCATE 4*J+2,50:PRINT CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);
  470. 5650  LOCATE 4*J+3,50:PRINT CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);:GOTO 5960
  471. 5660  '
  472. 5670  '   FIVE
  473. 5680  '
  474. 5690  LOCATE 4*J+1,50:PRINT "";CHR$(32);CHR$(2);CHR$(32);" ";CHR$(32);CHR$(2);" ";
  475. 5700  LOCATE 4*J+2,50:PRINT " ";CHR$(32);" ";CHR$(2);" ";CHR$(32);" ";
  476. 5710  LOCATE 4*J+3,50:PRINT " ";CHR$(2);" ";CHR$(32);" ";CHR$(2);" ";:GOTO 5960
  477. 5720  '
  478. 5730  '   FOUR
  479. 5740  '
  480. 5750  LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"  ";CHR$(32);CHR$(2);" ";
  481. 5760  LOCATE 4*J+2,50:PRINT "   ";CHR$(32);CHR$(32);CHR$(32);
  482. 5770  LOCATE 4*J+3,50:PRINT " ";CHR$(2);"  ";CHR$(32);CHR$(2);" ";:GOTO 5960
  483. 5780  '
  484. 5790  '   THREE
  485. 5800  '
  486. 5810  LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"     ";
  487. 5820  LOCATE 4*J+2,50:PRINT "   ";CHR$(2);"   ";
  488. 5830  LOCATE 4*J+3,50:PRINT "     ";CHR$(2);" ";:GOTO 5960
  489. 5840  '
  490. 5850  '   TWO
  491. 5860  '
  492. 5870  LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"     ";
  493. 5880  LOCATE 4*J+2,50:PRINT "       ";
  494. 5890  LOCATE 4*J+3,50:PRINT "     ";CHR$(2);" ";:GOTO 5960
  495. 5900  '
  496. 5910  '   ONE
  497. 5920  '
  498. 5930  LOCATE 4*J+1,50:PRINT "";"       ";
  499. 5940  LOCATE 4*J+2,50:PRINT "   ";CHR$(2);"   ";
  500. 5950  LOCATE 4*J+3,50:PRINT "       ";:GOTO 5960
  501. 5960  REM   GET OUT
  502. 5970  COLOR 7,0
  503. 5980  LOCATE 1,1
  504. 5990  RETURN 
  505. 6000  REM  
  506. 6010  REM  COMPUTER OPTION
  507. 6020  REM  
  508. 6030  CC= 0
  509. 6040  LOCATE 25,1
  510. 6050  PRINT "DO YOU WISH TO PLAY AGAINST ME?  Y/N  ";:GOSUB 2090
  511. 6060  Y$=INKEY$:IF Y$="" THEN 6060 ELSE BEEP
  512. 6070  IF Y$= "N"THEN RETURN 
  513. 6080  IF Y$< > "Y"THEN 6040
  514. 6090  CC= 1
  515. 6100  RETURN 
  516. 6110  REM  
  517. 6120  REM  CHECK FOR ACES-SIXES ANY POSITION
  518. 6130  REM  
  519. 6140  X= - 1
  520. 6150  FOR J= 0TO 4
  521. 6160  IF S(0,J)= I THEN X= J
  522. 6170  NEXT J
  523. 6180  RETURN 
  524. 6190  REM  
  525. 6200  REM  TOTAL DICE VALUE
  526. 6210  REM  
  527. 6220  FOR J= 1TO 5
  528. 6230  K(I,A)= K(I,A)+ C(J)
  529. 6240  NEXT J
  530. 6250  RETURN 
  531. 6260  REM  
  532. 6270  REM  MATRIX INFORMATION
  533. 6280  REM  
  534. 6290  REM  C(5)     CURRENT DICE
  535. 6300  REM  K(18,7)  SCOREBOARD
  536. 6310  REM           COLUMNS 1-13 BOARD NUMBER
  537. 6320  REM           COLUMN    14 BONUS UPPER
  538. 6330  REM           COLUMN    15 TOTAL UPPER
  539. 6340  REM           COLUMN    16 TOTAL LOWER
  540. 6350  REM           COLUMN    17 GRAND TOTAL
  541. 6360  REM           COLUMN    18 DONE/NOT DONE STATUS
  542. 6370  REM           ROW     1- 7 PLAYERS SCORE
  543. 6380  REM           ROW        N COMPUTERS SCORE (<7 PLAYERS)
  544. 6390  REM  
  545. 6400  REM  F(5)     DICE NUMBER TO ROLL AGAIN
  546. 6410  REM  A$(7)    PLAYERS NAMES
  547. 6420  REM  S(6,5)   COMPUTERS DICE LOGIC
  548. 6430  REM           COLUMN     0 DICE NUMBER BY QTY SEQUENCE
  549. 6440  REM           COLUMN     1 QTY/POSITION FOR ACES
  550. 6450  REM           COLUMN     2 QTY/POSITION FOR TWOS
  551. 6460  REM           COLUMN     3 QTY/POSITION FOR THREES
  552. 6470  REM           COLUMN     4 QTY/POSITION FOR FOURS
  553. 6480  REM           COLUMN     5 QTY/POSITION FOR FIVES
  554. 6490  REM           COLUMN     6 QTY/POSITION FOR SIXES
  555. 6500  REM           ROW        0 QUANTITY OF DICE
  556. 6510  REM           ROW     1- 5 POSITION OF DICE IN C(5)
  557. 6520  REM  
  558. 6530  REM  SAMPLE S(Y,X) FOR DICE OF 5,2,4,6,4
  559. 6540  REM  
  560. 6550  REM  Y/X   0  1  2  3  4  5
  561. 6560  REM  0     4  6  5  2          IN QTY/VALUE SEQUENCE
  562. 6570  REM  1                         NO DIE=1
  563. 6580  REM  2     1  2                1 TWO POSITION 2
  564. 6590  REM  3                         NO DIE=3
  565. 6600  REM  4     2  3  5             2 FOURS POSITIONS 3 AND 5
  566. 6610  REM  5     1  1                1 FIVE POSITION 1
  567. 6620  REM  6     1  4                1 SIX POSITION 4
  568. 6630  REM           +           +
  569. 6640  REM  +     +  ++++++++++++++++ SECTION FOR POSITION DATA
  570. 6650  REM  +     +------------------ COLUMN INDICATES QTY
  571. 6660  REM  +------------------------ INDEX EQUATES TO DIE VALUE
  572. 6670  REM  
  573. 6680  REM  M(13)    PRIORITY NUMBERS FOR MUST SCORE WHERE VALUE
  574. 6690  REM           REFERS TO PLAY BOARD NUMBER
  575. 6700  REM  
  576. 6710  REM  TO RUN INTERNAL CHECKS SECTION - ENTER A -1 FOR
  577. 6720  REM  PLAYING BOARD NUMBER OR QTY OF DICE TO ROLL
  578. 6730  REM  AGAIN - - DATA WILL NOT BE LOST AND SCREEN
  579. 6740  REM  WILL BE RESET WITH CURRENT DICE SHOWN - -
  580. 6750  REM  PLAYERS/COMPUTERS SCORE WILL NOT SHOW UNTIL
  581. 6760  REM  AFTER THEIR TURN
  582. 6770  REM  
  583. 6780  REM  COMPUTER PRIORIRIES
  584. 6790  RESTORE 6800
  585. 6800  DATA 11,9,12,8,1,2,3,4,5,6,10,7,13
  586. 6810  FOR Y= 1TO 13:READ M(Y):NEXT :RETURN :RETURN 
  587. 6820  REM player's board
  588. 6830  LOCATE 25,1,0:COLOR 7,0:CLS:COLOR 5,3:LOCATE 1,1:FOR Y=1 TO 22:PRINTSTRING$(80," ");:NEXT:LOCATE 1,1
  589. 6840  PRINT"             ERRTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENOPTION
  590. 6850  PRINT"ACES........1CALL...CALL...CALL...CALL...CALL...CALL...CALL1"
  591. 6860  PRINT"TWOS........2CALL...CALL...CALL...CALL...CALL...CALL...CALL2"
  592. 6870  PRINT"THREES......3CALL...CALL...CALL...CALL...CALL...CALL...CALL3"
  593. 6880  PRINT"FOURS.......4CALL...CALL...CALL...CALL...CALL...CALL...CALL4"
  594. 6890  PRINT"FIVES.......5CALL...CALL...CALL...CALL...CALL...CALL...CALL5"
  595. 6900  PRINT"SIXES.......6CALL...CALL...CALL...CALL...CALL...CALL...CALL6"
  596. 6910  PRINT"             PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>"
  597. 6920  PRINT"TOTAL UPPER..CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  598. 6930  PRINT"             PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>"
  599. 6940  PRINT"3 OF A KIND.7CALL...CALL...CALL...CALL...CALL...CALL...CALL7"
  600. 6950  PRINT"4 OF A KIND.8CALL...CALL...CALL...CALL...CALL...CALL...CALL8"
  601. 6960  PRINT"FULL HOUSE..9CALL...CALL...CALL...CALL...CALL...CALL...CALL9"
  602. 6970  PRINT"SM STRAIGHT.ACALL...CALL...CALL...CALL...CALL...CALL...CALLA"
  603. 6980  PRINT"LG STRAIGHT.BCALL...CALL...CALL...CALL...CALL...CALL...CALLB"
  604. 6990  PRINT"YATZEE......CCALL...CALL...CALL...CALL...CALL...CALL...CALLC"
  605. 7000  PRINT"CHANCE......DCALL...CALL...CALL...CALL...CALL...CALL...CALLD"
  606. 7010  PRINT"             PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>"
  607. 7020  PRINT"TOTAL LOWER..CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  608. 7030  PRINT"TOP BONUS....CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  609. 7040  PRINT"GRAND TOTAL..CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  610. 7050  PRINT"             ERLTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSAVE"
  611. 7060  FOR N=1 TO 5:LOCATE N*4-2,46:PRINT N;:NEXT
  612. 7070  RETURN
  613. 7080  LOCATE 25,1:PRINT STRING$(70," ");:LOCATE 25,1:RETURN
  614. 7090  ' KB INPUT AND ESCAPE
  615. 7100  KB$="":WHILE KB$="":KB$=INKEY$:WEND
  616. 7110  IF KB$=CHR$(27) THEN 5070 ELSE RETURN
  617. 65000  REM -*- program name -*-
  618. 65010  REM Version 1.00
  619. 65020  KEY(2) ON:ON KEY(2) GOSUB 65200
  620. 65030  KEY OFF:SCREEN 0,1:COLOR 15,3,1:WIDTH 40:CLS:LOCATE 5,18:PRINT " IBM "
  621. 65040  LOCATE 7,12,0:PRINT "Personal Computer"
  622. 65050  COLOR 10,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
  623. 65060  LOCATE 11,9,0:PRINT CHR$(179)+" -*-   YAHTZEE   -*- "+CHR$(179)
  624. 65070  LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
  625. 65080  LOCATE 13,9,0:PRINT CHR$(179)+"By: J Helms & M Pezok"+CHR$(179)
  626. 65085  LOCATE 14,9,0:PRINT CHR$(179)+"PC vsn: Patrick Leabo"+CHR$(179)
  627. 65090  LOCATE 15,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
  628. 65100  COLOR 15,0:LOCATE 19,5,0:PRINT "   Original written for CCII   "
  629. 65110  COLOR 14,0:LOCATE 23,7,0:PRINT "Press space bar to continue";CHR$(7);
  630. 65120  COLOR 30:LOCATE 23,5,0:PRINT CHR$(15);:LOCATE 23,35,0:PRINT CHR$(15);
  631. 65130  COLOR 14
  632. 65140  POKE 106,0 'CLEAR KYBD BUFFER
  633. 65150  CMD$ = INKEY$
  634. 65160  IF CMD$="" THEN GOTO 65150
  635. 65170  IF CMD$ = CHR$(27) THEN GOTO 65200
  636. 65180  IF CMD$ = " " THEN GOTO 1
  637. 65190  GOTO 65140
  638. 65200  ON ERROR GOTO 65240:RUN"BASMENU
  639. 65210  IF E<>71 THEN RUN"control
  640. 65220  RUN"A:TRANSFER
  641. 65230  SYSTEM
  642. 65240  E=ERR:RESUME NEXT
  643.